<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0135)http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern-Kien-truc-3-lop-va-MVC-pattern.html -->
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="vi" id="vbulletin_html"><object id="__IDM__" type="application/x-idm-downloader" width="1" height="1" style="visibility: hidden !important; display: block !important; position: absolute !important; top: 0px !important; left: 0px !important; width: 1px !important; height: 1px !important; border-width: 0px !important;"></object><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	
<meta id="e_vb_meta_bburl" name="vb_meta_bburl" content="http://congdongso.com/diendan">
<!--<base href="http://congdongso.com/diendan/">--><base href="."><!--[if IE]></base><![endif]-->
<meta name="generator" content="vBulletin 4.2.0">

	<link rel="Shortcut Icon" href="http://congdongso.com/diendan/favicon.ico" type="image/x-icon">








	
		<script type="text/javascript" async="" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/ga.js"></script><script type="text/javascript" async="" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/ga.js"></script><script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/combo"></script>
	

<script type="text/javascript">
<!--
	if (typeof YAHOO === 'undefined') // Load ALL YUI Local
	{
		document.write('<script type="text/javascript" src="clientscript/yui/yuiloader-dom-event/yuiloader-dom-event.js?v=420"><\/script>');
		document.write('<script type="text/javascript" src="clientscript/yui/connection/connection-min.js?v=420"><\/script>');
		var yuipath = 'clientscript/yui';
		var yuicombopath = '';
		var remoteyui = false;
	}
	else	// Load Rest of YUI remotely (where possible)
	{
		var yuipath = 'http://yui.yahooapis.com/2.9.0/build';
		var yuicombopath = 'http://yui.yahooapis.com/combo';
		var remoteyui = true;
		if (!yuicombopath)
		{
			document.write('<script type="text/javascript" src="http://yui.yahooapis.com/2.9.0/build/connection/connection-min.js"><\/script>');
		}
	}
	var SESSIONURL = "s=91392ada43de74d14b61d2ecc3a60ac7&";
	var SECURITYTOKEN = "guest";
	var IMGDIR_MISC = "images/misc";
	var IMGDIR_BUTTON = "images/buttons";
	var vb_disable_ajax = parseInt("0", 10);
	var SIMPLEVERSION = "420";
	var BBURL = "http://congdongso.com/diendan";
	var LOGGEDIN = 0 > 0 ? true : false;
	var THIS_SCRIPT = "showthread";
	var RELPATH = "threads/2782-Kiến-trúc-3-lớp-và-MVC-pattern-Kien-truc-3-lop-va-MVC-pattern.html";
	var PATHS = {
		forum : "",
		cms   : "",
		blog  : ""
	};
	var AJAXBASEURL = "http://congdongso.com/diendan/";
// -->
</script>
<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/vbulletin-core.js"></script>





	<link rel="stylesheet" type="text/css" href="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/css.php">

	<!--[if lt IE 8]>
	<link rel="stylesheet" type="text/css" href="css.php?styleid=73&amp;langid=8&amp;d=1340852192&amp;td=ltr&amp;sheet=popupmenu-ie.css,vbulletin-ie.css,vbulletin-chrome-ie.css,vbulletin-formcontrols-ie.css,editor-ie.css" />
	<![endif]-->


	<meta name="keywords" content="mvc, pattern, các, lớp, server, vụ, này, hiện, dụng, của, thực, dịch, trong, liệu, phần, dữ, cấp, như, business, nhiều, sẽ, data, sử, cung, thành, logic, hình, nhiệm, dùng, client, một, thông, không, người, database, hệ, đó, ứng, components, presentation, cầu, chính, layer, yêu, đến, để, access, việc, đổi, trên">
	<meta name="description" content="Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là: Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi. 
  
Presentation Layer (PL) 
  
Lớp này làm nhiệm vụ giao">

	<title> Kiến trúc 3 lớp và MVC pattern | Kien truc 3 lop va MVC pattern</title>
	<link rel="canonical" href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern-Kien-truc-3-lop-va-MVC-pattern.html?s=91392ada43de74d14b61d2ecc3a60ac7">
	
	
	
	
	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/vbulletin_ajax_threadrate.js"></script>
	
	
	
	
	
	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/vbulletin_ajax_taglist.js"></script>
	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/vbulletin_ajax_suggest.js"></script>
	
	

	
		<link rel="stylesheet" type="text/css" href="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/css(1).php">
	
	<!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="css.php?styleid=73&amp;langid=8&amp;d=1340852192&amp;td=ltr&amp;sheet=toolsmenu-ie.css,postlist-ie.css,showthread-ie.css,postbit-ie.css,poll-ie.css" /><![endif]-->
<link rel="stylesheet" type="text/css" href="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/css(2).php">

<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="css.php?styleid=73&amp;langid=8&amp;d=1340852192&amp;td=ltr&amp;sheet=replacement-vbulletin-ie.css" />
<![endif]-->
	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/poppop.js"></script>

<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/jquery-1.3.1.min.js"></script>

<link rel="icon" type="image/png" href="http://congdongso.com/diendan/favicon.png">

	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/shCore.js"></script>
	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/shBrushCpp.js"></script>
	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/shBrushCss.js"></script>
	<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/shBrushJava.js"></script>
	<link type="text/css" rel="stylesheet" href="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/shCore.css">
	<link type="text/css" rel="stylesheet" href="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/shThemeDefault.css">
	<script type="text/javascript">

SyntaxHighlighter.config.stripBrs = true;
		SyntaxHighlighter.config.clipboardSwf = 'http://congdongso.com/diendan/clientscript/syntax/clipboard.swf';
		SyntaxHighlighter.all();
	</script>

<meta name="verify-v1" content="U+nwEQaP+wMQtSDi4/9g36gXeGVu6HyZv6KX6SZkUxc=">
<meta name="google-site-verification" content="_mmGgR48TYWM1pWulYOgErytPo71yd3KBRlsT5iCZhM">

<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/avim.js"></script> 
<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/swfobject.js"></script>
<script type="text/javascript">var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-15630153-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();</script>
<style type="text/css">.fb_hidden{position:absolute;top:-10000px;z-index:10001}
.fb_invisible{display:none}
.fb_reset{background:none;border-spacing:0;border:0;color:#000;cursor:auto;direction:ltr;font-family:"lucida grande", tahoma, verdana, arial, sans-serif;font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:1;margin:0;overflow:visible;padding:0;text-align:left;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-spacing:normal}
.fb_link img{border:none}
.fb_dialog{background:rgba(82, 82, 82, .7);position:absolute;top:-10000px;z-index:10001}
.fb_dialog_advanced{padding:10px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}
.fb_dialog_content{background:#fff;color:#333}
.fb_dialog_close_icon{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yA/x/IE9JII6Z1Ys.png) no-repeat scroll 0 0 transparent;_background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y6/x/s816eWC-2sl.gif);cursor:pointer;display:block;height:15px;position:absolute;right:18px;top:17px;width:15px;top:8px\9;right:7px\9}
.fb_dialog_mobile .fb_dialog_close_icon{top:5px;left:5px;right:auto}
.fb_dialog_padding{background-color:transparent;position:absolute;width:1px;z-index:-1}
.fb_dialog_close_icon:hover{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yA/x/IE9JII6Z1Ys.png) no-repeat scroll 0 -15px transparent;_background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y6/x/s816eWC-2sl.gif)}
.fb_dialog_close_icon:active{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yA/x/IE9JII6Z1Ys.png) no-repeat scroll 0 -30px transparent;_background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/y6/x/s816eWC-2sl.gif)}
.fb_dialog_loader{background-color:#f2f2f2;border:1px solid #606060;font-size:24px;padding:20px}
.fb_dialog_top_left,
.fb_dialog_top_right,
.fb_dialog_bottom_left,
.fb_dialog_bottom_right{height:10px;width:10px;overflow:hidden;position:absolute}
/* @noflip */
.fb_dialog_top_left{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yR/x/8YeTNIlTZjm.png) no-repeat 0 0;left:-10px;top:-10px}
/* @noflip */
.fb_dialog_top_right{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yR/x/8YeTNIlTZjm.png) no-repeat 0 -10px;right:-10px;top:-10px}
/* @noflip */
.fb_dialog_bottom_left{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yR/x/8YeTNIlTZjm.png) no-repeat 0 -20px;bottom:-10px;left:-10px}
/* @noflip */
.fb_dialog_bottom_right{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yR/x/8YeTNIlTZjm.png) no-repeat 0 -30px;right:-10px;bottom:-10px}
.fb_dialog_vert_left,
.fb_dialog_vert_right,
.fb_dialog_horiz_top,
.fb_dialog_horiz_bottom{position:absolute;background:#525252;filter:alpha(opacity=70);opacity:.7}
.fb_dialog_vert_left,
.fb_dialog_vert_right{width:10px;height:100%}
.fb_dialog_vert_left{margin-left:-10px}
.fb_dialog_vert_right{right:0;margin-right:-10px}
.fb_dialog_horiz_top,
.fb_dialog_horiz_bottom{width:100%;height:10px}
.fb_dialog_horiz_top{margin-top:-10px}
.fb_dialog_horiz_bottom{bottom:0;margin-bottom:-10px}
.fb_dialog_iframe{line-height:0}
.fb_dialog_content .dialog_title{background:#6d84b4;border:1px solid #3b5998;color:#fff;font-size:14px;font-weight:bold;margin:0}
.fb_dialog_content .dialog_title > span{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yD/x/Cou7n-nqK52.gif)
no-repeat 5px 50%;float:left;padding:5px 0 7px 26px}
body.fb_hidden{-webkit-transform:none;height:100%;margin:0;left:-10000px;overflow:visible;position:absolute;top:-10000px;width:100%
}
.fb_dialog.fb_dialog_mobile.loading{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yc/x/3rhSv5V8j3o.gif)
white no-repeat 50% 50%;min-height:100%;min-width:100%;overflow:hidden;position:absolute;top:0;z-index:10001}
.fb_dialog.fb_dialog_mobile.loading.centered{max-height:590px;min-height:590px;max-width:500px;min-width:500px}
#fb-root #fb_dialog_ipad_overlay{background:rgba(0, 0, 0, .45);position:absolute;left:0;top:0;width:100%;min-height:100%;z-index:10000}
#fb-root #fb_dialog_ipad_overlay.hidden{display:none}
.fb_dialog.fb_dialog_mobile.loading iframe{visibility:hidden}
.fb_dialog_content .dialog_header{-webkit-box-shadow:white 0 1px 1px -1px inset;background:-webkit-gradient(linear, 0 0, 0 100%, from(#738ABA), to(#2C4987));border-bottom:1px solid;border-color:#1d4088;color:#fff;font:14px Helvetica, sans-serif;font-weight:bold;text-overflow:ellipsis;text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0;vertical-align:middle;white-space:nowrap}
.fb_dialog_content .dialog_header table{-webkit-font-smoothing:subpixel-antialiased;height:43px;width:100%
}
.fb_dialog_content .dialog_header td.header_left{font-size:12px;padding-left:5px;vertical-align:middle;width:60px
}
.fb_dialog_content .dialog_header td.header_right{font-size:12px;padding-right:5px;vertical-align:middle;width:60px
}
.fb_dialog_content .touchable_button{background:-webkit-gradient(linear, 0 0, 0 100%, from(#4966A6),
color-stop(0.5, #355492), to(#2A4887));border:1px solid #29447e;-webkit-background-clip:padding-box;-webkit-border-radius:3px;-webkit-box-shadow:rgba(0, 0, 0, .117188) 0 1px 1px inset,
rgba(255, 255, 255, .167969) 0 1px 0;display:inline-block;margin-top:3px;max-width:85px;line-height:18px;padding:4px 12px;position:relative}
.fb_dialog_content .dialog_header .touchable_button input{border:none;background:none;color:#fff;font:12px Helvetica, sans-serif;font-weight:bold;margin:2px -12px;padding:2px 6px 3px 6px;text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0}
.fb_dialog_content .dialog_header .header_center{color:#fff;font-size:16px;font-weight:bold;line-height:18px;text-align:center;vertical-align:middle}
.fb_dialog_content .dialog_content{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yJ/x/jKEcVPZFk-2.gif) no-repeat 50% 50%;border:1px solid #555;border-bottom:0;border-top:0;height:150px}
.fb_dialog_content .dialog_footer{background:#f2f2f2;border:1px solid #555;border-top-color:#ccc;height:40px}
#fb_dialog_loader_close{float:left}
.fb_dialog.fb_dialog_mobile .fb_dialog_close_button{text-shadow:rgba(0, 30, 84, .296875) 0 -1px 0}
.fb_dialog.fb_dialog_mobile .fb_dialog_close_icon{visibility:hidden}
.fb_iframe_widget{position:relative;display:-moz-inline-block;display:inline-block}
.fb_iframe_widget iframe{position:absolute}
.fb_iframe_widget_lift{z-index:1}
.fb_iframe_widget span{position:relative;display:inline-block;vertical-align:text-bottom;text-align:justify}
.fb_hide_iframes iframe{position:relative;left:-10000px}
.fb_iframe_widget_loader{position:relative;display:inline-block}
.fb_iframe_widget_fluid{display:inline}
.fb_iframe_widget_loader iframe{min-height:32px;z-index:2;zoom:1}
.fb_iframe_widget_loader .FB_Loader{background:url(http://static.ak.fbcdn.net/rsrc.php/v2/yJ/x/jKEcVPZFk-2.gif) no-repeat;height:32px;width:32px;margin-left:-16px;position:absolute;left:50%;z-index:4}
.fb_button_simple,
.fb_button_simple_rtl{background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yH/x/eIpbnVKI9lR.png);background-repeat:no-repeat;cursor:pointer;outline:none;text-decoration:none}
.fb_button_simple_rtl{background-position:right 0}
.fb_button_simple .fb_button_text{margin:0 0 0 20px;padding-bottom:1px}
.fb_button_simple_rtl .fb_button_text{margin:0 10px 0 0}
a.fb_button_simple:hover .fb_button_text,
a.fb_button_simple_rtl:hover .fb_button_text,
.fb_button_simple:hover .fb_button_text,
.fb_button_simple_rtl:hover .fb_button_text{text-decoration:underline}
.fb_button,
.fb_button_rtl{background:#29447e url(http://static.ak.fbcdn.net/rsrc.php/v2/yl/x/FGFbc80dUKj.png);background-repeat:no-repeat;cursor:pointer;display:inline-block;padding:0 0 0 1px;text-decoration:none;outline:none}
.fb_button .fb_button_text,
.fb_button_rtl .fb_button_text{background:#5f78ab url(http://static.ak.fbcdn.net/rsrc.php/v2/yl/x/FGFbc80dUKj.png);border-top:solid 1px #879ac0;border-bottom:solid 1px #1a356e;color:#fff;display:block;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;font-weight:bold;padding:2px 6px 3px 6px;margin:1px 1px 0 21px;text-shadow:none}
a.fb_button,
a.fb_button_rtl,
.fb_button,
.fb_button_rtl{text-decoration:none}
a.fb_button:active .fb_button_text,
a.fb_button_rtl:active .fb_button_text,
.fb_button:active .fb_button_text,
.fb_button_rtl:active .fb_button_text{border-bottom:solid 1px #29447e;border-top:solid 1px #45619d;background:#4f6aa3;text-shadow:none}
.fb_button_xlarge,
.fb_button_xlarge_rtl{background-position:left -60px;font-size:24px;line-height:30px}
.fb_button_xlarge .fb_button_text{padding:3px 8px 3px 12px;margin-left:38px}
a.fb_button_xlarge:active{background-position:left -99px}
.fb_button_xlarge_rtl{background-position:right -268px}
.fb_button_xlarge_rtl .fb_button_text{padding:3px 8px 3px 12px;margin-right:39px}
a.fb_button_xlarge_rtl:active{background-position:right -307px}
.fb_button_large,
.fb_button_large_rtl{background-position:left -138px;font-size:13px;line-height:16px}
.fb_button_large .fb_button_text{margin-left:24px;padding:2px 6px 4px 6px}
a.fb_button_large:active{background-position:left -163px}
.fb_button_large_rtl{background-position:right -346px}
.fb_button_large_rtl .fb_button_text{margin-right:25px}
a.fb_button_large_rtl:active{background-position:right -371px}
.fb_button_medium,
.fb_button_medium_rtl{background-position:left -188px;font-size:11px;line-height:14px}
a.fb_button_medium:active{background-position:left -210px}
.fb_button_medium_rtl{background-position:right -396px}
.fb_button_text_rtl,
.fb_button_medium_rtl .fb_button_text{padding:2px 6px 3px 6px;margin-right:22px}
a.fb_button_medium_rtl:active{background-position:right -418px}
.fb_button_small,
.fb_button_small_rtl{background-position:left -232px;font-size:10px;line-height:10px}
.fb_button_small .fb_button_text{padding:2px 6px 3px;margin-left:17px}
a.fb_button_small:active,
.fb_button_small:active{background-position:left -250px}
.fb_button_small_rtl{background-position:right -440px}
.fb_button_small_rtl .fb_button_text{padding:2px 6px;margin-right:18px}
a.fb_button_small_rtl:active{background-position:right -458px}
.fb_share_count_wrapper{position:relative;float:left}
.fb_share_count{background:#b0b9ec none repeat scroll 0 0;color:#333;font-family:"lucida grande", tahoma, verdana, arial, sans-serif;text-align:center}
.fb_share_count_inner{background:#e8ebf2;display:block}
.fb_share_count_right{margin-left:-1px;display:inline-block}
.fb_share_count_right .fb_share_count_inner{border-top:solid 1px #e8ebf2;border-bottom:solid 1px #b0b9ec;margin:1px 1px 0 1px;font-size:10px;line-height:10px;padding:2px 6px 3px;font-weight:bold}
.fb_share_count_top{display:block;letter-spacing:-1px;line-height:34px;margin-bottom:7px;font-size:22px;border:solid 1px #b0b9ec}
.fb_share_count_nub_top{border:none;display:block;position:absolute;left:7px;top:35px;margin:0;padding:0;width:6px;height:7px;background-repeat:no-repeat;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yP/x/bSOHtKbCGYI.png)}
.fb_share_count_nub_right{border:none;display:inline-block;padding:0;width:5px;height:10px;background-repeat:no-repeat;background-image:url(http://static.ak.fbcdn.net/rsrc.php/v2/yL/x/i_oIVTKMYsL.png);vertical-align:top;background-position:right 5px;z-index:10;left:2px;margin:0 2px 0 0;position:relative}
.fb_share_no_count{display:none}
.fb_share_size_Small .fb_share_count_right .fb_share_count_inner{font-size:10px}
.fb_share_size_Medium .fb_share_count_right .fb_share_count_inner{font-size:11px;padding:2px 6px 3px;letter-spacing:-1px;line-height:14px}
.fb_share_size_Large .fb_share_count_right .fb_share_count_inner{font-size:13px;line-height:16px;padding:2px 6px 4px;font-weight:normal;letter-spacing:-1px}
.fb_share_count_hidden .fb_share_count_nub_top,
.fb_share_count_hidden .fb_share_count_top,
.fb_share_count_hidden .fb_share_count_nub_right,
.fb_share_count_hidden .fb_share_count_right{visibility:hidden}
.fb_connect_bar_container div,
.fb_connect_bar_container span,
.fb_connect_bar_container a,
.fb_connect_bar_container img,
.fb_connect_bar_container strong{background:none;border-spacing:0;border:0;direction:ltr;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:1;margin:0;overflow:visible;padding:0;text-align:left;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-spacing:normal;vertical-align:baseline}
.fb_connect_bar_container{position:fixed;left:0 !important;right:0 !important;height:42px !important;padding:0 25px !important;margin:0 !important;vertical-align:middle !important;border-bottom:1px solid #333 !important;background:#3b5998 !important;z-index:99999999 !important;overflow:hidden !important}
.fb_connect_bar_container_ie6{position:absolute;top:expression(document.compatMode=="CSS1Compat"? document.documentElement.scrollTop+"px":body.scrollTop+"px")}
.fb_connect_bar{position:relative;margin:auto;height:100%;width:100%;padding:6px 0 0 0 !important;background:none;color:#fff !important;font-family:"lucida grande", tahoma, verdana, arial, sans-serif !important;font-size:13px !important;font-style:normal !important;font-variant:normal !important;font-weight:normal !important;letter-spacing:normal !important;line-height:1 !important;text-decoration:none !important;text-indent:0 !important;text-shadow:none !important;text-transform:none !important;white-space:normal !important;word-spacing:normal !important}
.fb_connect_bar a:hover{color:#fff}
.fb_connect_bar .fb_profile img{height:30px;width:30px;vertical-align:middle;margin:0 6px 5px 0}
.fb_connect_bar div a,
.fb_connect_bar span,
.fb_connect_bar span a{color:#bac6da;font-size:11px;text-decoration:none}
.fb_connect_bar .fb_buttons{float:right;margin-top:7px}
.fb_edge_widget_with_comment{position:relative;*z-index:1000}
.fb_edge_widget_with_comment span.fb_edge_comment_widget{position:absolute}
.fb_edge_widget_with_comment span.fb_send_button_form_widget{z-index:1}
.fb_edge_widget_with_comment span.fb_send_button_form_widget .FB_Loader{left:0;top:1px;margin-top:6px;margin-left:0;background-position:50% 50%;background-color:#fff;height:150px;width:394px;border:1px #666 solid;border-bottom:2px solid #283e6c;z-index:1}
.fb_edge_widget_with_comment span.fb_send_button_form_widget.dark .FB_Loader{background-color:#000;border-bottom:2px solid #ccc}
.fb_edge_widget_with_comment span.fb_send_button_form_widget.siderender
.FB_Loader{margin-top:0}
.fbpluginrecommendationsbarleft,
.fbpluginrecommendationsbarright{position:fixed !important;bottom:0;z-index:999}
/* @noflip */
.fbpluginrecommendationsbarleft{left:10px}
/* @noflip */
.fbpluginrecommendationsbarright{right:10px}
</style></head>

<body>

<div class="above_body"> <!-- closing tag is in template navbar -->
<div id="header" class="floatcontainer doc_header">
	<div><a name="top" href="http://congdongso.com/diendan/index.php?s=91392ada43de74d14b61d2ecc3a60ac7" class="logo-image"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/vbulletin4_logo.png" alt="CỘNG ĐỒNG SỐ - Powered by vBulletin" title="CỘNG ĐỒNG SỐ - Powered by vBulletin"></a></div>
	<div id="toplinks" class="toplinks">
		
			<ul class="nouser">
			
				<li><a href="http://congdongso.com/diendan/register.php?s=91392ada43de74d14b61d2ecc3a60ac7" rel="nofollow">Đăng Ký</a></li>
			
				<li><a rel="help" href="http://congdongso.com/diendan/faq.php?s=91392ada43de74d14b61d2ecc3a60ac7">Help</a></li>
				<li>
			<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/vbulletin_md5.js"></script>
			<form id="navbar_loginform" action="http://congdongso.com/diendan/login.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
				<fieldset id="logindetails" class="logindetails">
					<div>
						<div>
					<input type="text" class="textbox default-value" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="Tên tài khoản">
					<input type="password" class="textbox" tabindex="102" name="vb_login_password" id="navbar_password" size="10" style="display: none;">
					<input type="text" class="textbox default-value" tabindex="102" name="vb_login_password_hint" id="navbar_password_hint" size="10" value="Mật Khẩu" style="display: inline;">
					<input type="submit" class="loginbutton" tabindex="104" value="Đăng nhập" title="Nhập Tên tài khoản và mật khẩu vào ô dưới để đăng nhập, hoặc click vào nút &#39;Đăng ký&#39; để tạo tài khoản của bạn." accesskey="s">
						</div>
					</div>
				</fieldset>
				<div id="remember" class="remember">
					<label for="cb_cookieuser_navbar"><input type="checkbox" name="cookieuser" value="1" id="cb_cookieuser_navbar" class="cb_cookieuser_navbar" accesskey="c" tabindex="103"> Ghi nhớ?</label>
				</div>

				<input type="hidden" name="s" value="91392ada43de74d14b61d2ecc3a60ac7">
				<input type="hidden" name="securitytoken" value="guest">
				<input type="hidden" name="do" value="login">
				<input type="hidden" name="vb_login_md5password">
				<input type="hidden" name="vb_login_md5password_utf">
			</form>
			<script type="text/javascript">
			YAHOO.util.Dom.setStyle('navbar_password_hint', "display", "inline");
			YAHOO.util.Dom.setStyle('navbar_password', "display", "none");
			vB_XHTML_Ready.subscribe(function()
			{
			//
				YAHOO.util.Event.on('navbar_username', "focus", navbar_username_focus);
				YAHOO.util.Event.on('navbar_username', "blur", navbar_username_blur);
				YAHOO.util.Event.on('navbar_password_hint', "focus", navbar_password_hint);
				YAHOO.util.Event.on('navbar_password', "blur", navbar_password);
			});
			
			function navbar_username_focus(e)
			{
			//
				var textbox = YAHOO.util.Event.getTarget(e);
				if (textbox.value == 'Tên tài khoản')
				{
				//
					textbox.value='';
					textbox.style.color='#000000';
				}
			}

			function navbar_username_blur(e)
			{
			//
				var textbox = YAHOO.util.Event.getTarget(e);
				if (textbox.value == '')
				{
				//
					textbox.value='Tên tài khoản';
					textbox.style.color='#777777';
				}
			}
			
			function navbar_password_hint(e)
			{
			//
				var textbox = YAHOO.util.Event.getTarget(e);
				
				YAHOO.util.Dom.setStyle('navbar_password_hint', "display", "none");
				YAHOO.util.Dom.setStyle('navbar_password', "display", "inline");
				YAHOO.util.Dom.get('navbar_password').focus();
			}

			function navbar_password(e)
			{
			//
				var textbox = YAHOO.util.Event.getTarget(e);
				
				if (textbox.value == '')
				{
					YAHOO.util.Dom.setStyle('navbar_password_hint', "display", "inline");
					YAHOO.util.Dom.setStyle('navbar_password', "display", "none");
				}
			}
			</script>
				</li>
				
			</ul>
		
	</div>
	<div class="ad_global_header">
		
		 
	</div>
	<hr>
</div>
<div id="navbar" class="navbar">
	<ul id="navtabs" class="navtabs floatcontainer">
		
		
	<li class="selected" id="vbtab_forum">
		<a class="navtab" href="http://congdongso.com/diendan/forum.php?s=91392ada43de74d14b61d2ecc3a60ac7">Forum</a>
		
			<ul class="floatcontainer">
				
					
						
							<li id="vbflink_faq"><a href="http://congdongso.com/diendan/faq.php?s=91392ada43de74d14b61d2ecc3a60ac7">FAQ</a></li>
						
					
				
					
						
							<li id="vbflink_calendar"><a href="http://congdongso.com/diendan/calendar.php?s=91392ada43de74d14b61d2ecc3a60ac7">Calendar</a></li>
						
					
				
					
						<li class="popupmenu" id="vbmenu_actions">
							<a href="javascript://" class="popupctrl" id="yui-gen1">Forum Actions</a>
							<ul class="popupbody" id="yui-gen0">
								
									<li id="vbalink_mfr"><a href="http://congdongso.com/diendan/forumdisplay.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=markread&markreadhash=guest">Mark Forums Read</a></li>
								
								
							</ul>
						</li>
					
				
					
						<li class="popupmenu" id="vbmenu_qlinks">
							<a href="javascript://" class="popupctrl" id="yui-gen3">Quick Links</a>
							<ul class="popupbody" id="yui-gen2">
								
									<li id="vbqlink_leaders"><a href="http://congdongso.com/diendan/showgroups.php?s=91392ada43de74d14b61d2ecc3a60ac7">View Site Leaders</a></li>
								
								
							</ul>
						</li>
					
				
				
			</ul>
		
	</li>

		
	</ul>
	
		<div id="globalsearch" class="globalsearch">
			<form action="http://congdongso.com/diendan/search.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=process" method="post" id="navbar_search" class="navbar_search">
				
				<input type="hidden" name="securitytoken" value="guest">
				<input type="hidden" name="do" value="process">
				<span class="textboxcontainer"><span><input type="text" value="" name="query" class="textbox" tabindex="99"></span></span>
				<span class="buttoncontainer"><span><input type="image" class="searchbutton" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/search.png" name="submit" onclick="document.getElementById(&#39;navbar_search&#39;).submit;" tabindex="100"></span></span>
			</form>
			<ul class="navbar_advanced_search">
				<li><a href="http://congdongso.com/diendan/search.php?s=91392ada43de74d14b61d2ecc3a60ac7" accesskey="4">Tìm kiếm nâng cao</a></li>
				
			</ul>
		</div>
	
</div>
</div><!-- closing div for above_body -->

<div class="body_wrapper">
<div id="breadcrumb" class="breadcrumb">
	<ul class="floatcontainer">
		<li class="navbithome"><a href="http://congdongso.com/diendan/index.php?s=91392ada43de74d14b61d2ecc3a60ac7" accesskey="1"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/navbit-home.png" alt="Trang chủ" title="Trang chủ"></a></li>
		
	<li class="navbit"><a href="http://congdongso.com/diendan/index.php?s=91392ada43de74d14b61d2ecc3a60ac7">Diễn đàn</a></li>

	<li class="navbit"><a href="http://congdongso.com/diendan/forums/476-Chia-s%E1%BA%BB-ki%E1%BA%BFn-th%E1%BB%A9c.html?s=91392ada43de74d14b61d2ecc3a60ac7">Chia sẻ kiến thức</a></li>

	<li class="navbit"><a href="http://congdongso.com/diendan/forums/310-Ki%E1%BA%BFn-th%E1%BB%A9c-c%C3%B4ng-ngh%E1%BB%87.html?s=91392ada43de74d14b61d2ecc3a60ac7">Kiến thức công nghệ</a></li>

	<li class="navbit"><a href="http://congdongso.com/diendan/forums/8-L%E1%BA%ADp-tr%C3%ACnh.html?s=91392ada43de74d14b61d2ecc3a60ac7">Lập trình</a></li>

	<li class="navbit"><a href="http://congdongso.com/diendan/forums/241-JaVa.html?s=91392ada43de74d14b61d2ecc3a60ac7">JaVa</a></li>

		
	<li class="navbit lastnavbit"><span> Kiến trúc 3 lớp và MVC pattern</span></li>

	</ul>
	<hr>
</div>

 
 


	<form action="http://congdongso.com/diendan/profile.php?do=dismissnotice" method="post" id="notices" class="notices">
		<input type="hidden" name="do" value="dismissnotice">
		<input type="hidden" name="s" value="s=91392ada43de74d14b61d2ecc3a60ac7&amp;">
		<input type="hidden" name="securitytoken" value="guest">
		<input type="hidden" id="dismiss_notice_hidden" name="dismiss_noticeid" value="">
		<input type="hidden" name="url" value="">
		<ol>
			<li class="restore" id="navbar_notice_2">
	
	Bạn chưa đăng nhập hoặc chưa đăng ký làm thành viên, vì vậy bạn chỉ có thể xem các bài viết mà không thể gửi bài trả lời, đặt câu hỏi và  download tài nguyên trên <a href="http://congdongso.com/diendan/forum.php"><strong>diễn đàn</strong></a>. Hãy <a href="http://congdongso.com/diendan/register.php"><strong>đăng ký thành viên tại đây</strong></a>, hoàn toàn nhanh chóng và đơn giản.
</li>
		</ol>
	</form>





	<div id="above_postlist" class="above_postlist">
		
			<a href="http://congdongso.com/diendan/newreply.php?s=91392ada43de74d14b61d2ecc3a60ac7&p=7636&noquote=1" class="newcontent_textcontrol" id="newreplylink_top"><span>+</span> Trả lời Chủ đề</a>
			<img style="display:none" id="progress_newreplylink_top" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/progress.gif" alt="">
		
		<div id="pagination_top" class="pagination_top">
		
			<div id="postpagestats_above" class="postpagestats">
				Kết quả 1 đến 5 của 5
			</div>
		</div>
	</div>
	<div id="pagetitle" class="pagetitle">
		<h1>
			Chủ đề: <span class="threadtitle"><a href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern-Kien-truc-3-lop-va-MVC-pattern.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="Nạp lại trang này">Kiến trúc 3 lớp và MVC pattern | Kien truc 3 lop va MVC pattern</a></span>
		</h1>
		
			
<span id="fb-root" class=" fb_reset"><div style="position: absolute; top: -10000px; height: 0px; width: 0px;"><div><iframe style="display: none;" id="ff0d8f1b" name="ff0d8f1b" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/oauth.htm"></iframe></div></div><div style="position: absolute; top: -10000px; height: 0px; width: 0px;"><div><iframe id="fb_xdm_frame_http" name="fb_xdm_frame_http" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/xd_arbiter.htm"></iframe><iframe id="fb_xdm_frame_https" name="fb_xdm_frame_https" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/xd_arbiter(1).htm"></iframe></div></div></span>
<script type="text/javascript" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/all.js"></script>

<fb:like href="http://congdongso.com/diendan/threads/2782-Kiến-trúc-3-lớp-và-MVC-pattern.html" font="tahoma" layout="standard" show_faces="false" width="260" action="like" colorscheme="light" fb-xfbml-state="rendered" class="fb_edge_widget_with_comment fb_iframe_widget"><span style="height: 24px; width: 260px;"><iframe id="f19befaa68" name="f784ba318" scrolling="no" style="border: none; overflow: hidden; height: 24px; width: 260px;" title="Like this content on Facebook." class="fb_ltr" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/like.htm"></iframe></span></fb:like>
		
	</div>
	<div id="thread_controls" class="thread_controls toolsmenu">
		<div>
		<ul id="postlist_popups" class="postlist_popups popupgroup">
			
			
			<li class="popupmenu" id="threadtools">
				<h6><a class="popupctrl" href="javascript://" id="yui-gen5">Công cụ</a></h6>
				<ul class="popupbody" id="yui-gen4">
					<li><a href="http://congdongso.com/diendan/printthread.php?s=91392ada43de74d14b61d2ecc3a60ac7&t=2782&pp=10&page=1" accesskey="3" rel="nofollow">Hiển thị Trang có thể in</a></li>
					
					<li>
						
							<a href="http://congdongso.com/diendan/subscription.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=addsubscription&t=2782" rel="nofollow">Theo dõi Chủ đề này…</a>
						
					</li>
					
				</ul>
			</li>

			

			

			
				<li class="popupmenu" id="threadrating">
					<h6><a class="popupctrl" href="javascript://" id="yui-gen7">Đánh giá</a></h6>
					<div class="popupbody" id="yui-gen6">
						<form action="http://congdongso.com/diendan/threadrate.php" method="post" id="showthread_threadrate_form">
							<ul>
								<li id="threadrating_current" class="hidden" title="Chủ đề được đánh giá: 0 lượt đánh giá, trung bình ."><label>
									<span class="rating r_right">Current Rating</span>
								</label></li>
								
									<li><label for="r5"><span class="rating r5">
										‎<input type="radio" name="vote" value="5" id="r5" tabindex="20"> Excellent
									</span></label></li>
									<li><label for="r4"><span class="rating r4_right">
										‎<input type="radio" name="vote" value="4" id="r4" tabindex="21"> Good
									</span></label></li>
									<li><label for="r3"><span class="rating r3_right">
										‎<input type="radio" name="vote" value="3" id="r3" tabindex="22"> Average
									</span></label></li>
									<li><label for="r2"><span class="rating r2_right">
										‎<input type="radio" name="vote" value="2" id="r2" tabindex="23"> Bad
									</span></label></li>
									<li><label for="r1"><span class="rating r1_right">
										‎<input type="radio" name="vote" value="1" id="r1" tabindex="24"> Terrible
									</span></label></li>
									<li class="formsubmit"><input type="button" class="button" value="Bình chọn ngay"></li>
								
							</ul>
							<input type="hidden" name="s" value="91392ada43de74d14b61d2ecc3a60ac7">
							<input type="hidden" name="securitytoken" value="guest">
							<input type="hidden" name="t" value="2782">
							<input type="hidden" name="pp" value="10">
							<input type="hidden" name="page" value="1">
						</form>
					</div>
					<script type="text/javascript">
					<!--
						vB_AJAX_ThreadRate_Init('showthread_threadrate_form', 2782);
					//-->
					</script>
				</li>
			

			

			
			</ul>
		</div>
	</div>

<div id="postlist" class="postlist restrain">
	

	
		<ol id="posts" class="posts" start="1">
			
<li class="postbitlegacy postbitim postcontainer old" id="post_7549">
<!-- see bottom of postbit.css for .userinfo .popupmenu styles -->

	<div class="posthead">
			<span class="postdate old">
				
					<span class="date">17-09-2009,&nbsp;<span class="time">05:08</span></span>
				
			</span>
			<span class="nodecontrols">
				
					<a name="post7549" href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern.html?s=91392ada43de74d14b61d2ecc3a60ac7&p=7549&viewfull=1#post7549" class="postcounter">#1</a><a id="postcount7549" name="1"></a>
				
				
				
			</span>
	</div>
	<div class="postdetails">
		<div class="userinfo">
			<div class="username_container">
			
				<div class="popupmenu memberaction" id="yui-gen8">
	<a class="username offline popupctrl" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến" id="yui-gen10"><strong><span style="color: black;">river_11576</span></strong></a>
	<ul class="popupbody memberaction_body" id="yui-gen9">
		<li class="left">
			<a href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" class="siteicon_profile">
				Xem Hồ sơ
			</a>
		</li>
		
		<li class="right">
			<a href="http://congdongso.com/diendan/search.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=finduser&userid=8&contenttype=vBForum_Post&showposts=1" class="siteicon_forum" rel="nofollow">
				Xem bài viết diễn đàn
			</a>
		</li>
		
		
		<li class="left">
			<a href="http://congdongso.com/diendan/private.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newpm&u=8" class="siteicon_message" rel="nofollow">
				Tin nhắn riêng
			</a>
		</li>
		
		
		
		
		
		
		

		

		
		
	</ul>
</div>
				<img class="inlineimg onlinestatus" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/user-offline.png" alt="river_11576 Đang Ngoại tuyến" border="0" title="river_11576 Đang Ngoại tuyến">

			
			</div>
			<span class="usertitle">
				
			</span>
			
				<span class="rank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/star6.gif" alt="" border=""></span>
			
			
			
			
			<a class="postuseravatar" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến">
				<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/image.php" alt="river_11576&#39;s Avatar" title="river_11576&#39;s Avatar">
			</a>
			 
			
				<hr>
				<dl class="userinfo_extra">
					<dt>Tham gia</dt> <dd>Dec 2008</dd>
					
					
					<dt>Bài viết</dt> <dd>1.050</dd>	
					
				</dl>
				
				
				<div class="imlinks">
					    
				</div>
			
		</div>
		<div class="postbody">
			<div class="postrow has_after_content">
				
				
				<h2 class="title icon">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/icon1.png" alt="Mặc định" title="Mặc định"> Kiến trúc 3 lớp và MVC pattern
				</h2>
				


						
							
							
						
						
				<div class="content">
					<div id="post_message_7549">
						<blockquote class="postcontent restore ">
							Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là: Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.<br>
 <br>
<b><font size="5">Presentation Layer (PL)</font></b><br>
 <br>
Lớp này làm nhiệm vụ giao tiếp với người dùng đầu cuối (đơn giản là người sử dụng phần mềm) để thu thập dữ liệu và hiển thị kết quả hoặc dữ liệu thông qua các thành phần giao diện người sử dụng như Jtable trong Swing… Lớp này sử dụng các dịch vụ do lớp Business Logic Layer cung cấp.<br>
 <br>
Trong lớp này có 2 thành phần chính là User Interface Components và User Interface Process Components.<br>
UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối. <br>
 <br>
UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard…<br>
 <br>
<b><font size="5">Business Logic Layer (BLL)</font></b><br>
 <br>
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực tuyến như VeriSign, Paypal…).<br>
 <br>
Trong lớp này có các thành phần chính là Business Components, Business Entities và Service Interface.<br>
Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng. Lớp Presentation chỉ cần biết các dịch vụ thông qua giao diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào.<br>
 <br>
Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý. Trong ứng dụng chúng ta các đối tượng này là các chuyên mục(Category) và bản tin(News) làm nhiệm vụ cung cấp các dịch vụ quản lý chuyên mục và các bản tin (thêm, xóa, sửa, xem chi tiết, lấy danh sách…). Các business entities này cũng được dùng để trao đổi thông tin giữa lớp Presentation và lớp Data Access.<br>
 <br>
Business Components là những thành phần chính thực hiện các dịch vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng.<br>
 <br>
<b><font size="5">Data Access Layer (DAL)</font></b><br>
 <br>
Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,… để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents).<br>
 <br>
Data Access Logic components (DALC) là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu (JDBC trong Java)<br>
Data Sources như RDMBS, XML, File systems…<br>
Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại.<br>
 <br>
<div style="text-align: center;"><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fwww.box.net%2Frssdownload%2F15084541%2FKien%2520truc%25203%2520lop.rar" rel="nofollow" target="_blank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/boxnet.gif" border="0" alt="" title="Boxnet" class="inlineimg"></a></div> <br>
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				<a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fimar.spaanjaars.com%2FImages%2FArticles%2FN-LayerDesign%2FLayersOverview.jpg" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fimar.spaanjaars.com%2FImages%2FArticles%2FN-LayerDesign%2FLayersOverview.jpg" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fimar.spaanjaars.com%2FImages%2FArticles%2FN-LayerDesign%2FLayersOverview.jpg" rel="nofollow" target="_blank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/LayersOverview.jpg" border="0" alt=""></a><br>
 <br>
Việc tách lớp này có lợi khi sau này, bạn muốn thay đổi database từ MySql sang MSSql hoặc Oracle, bạn chỉ việc thay đổi lớp DAL mà không làm ảnh hưởng các lớp khác.<br>
Theo hình vẽ, quy trình sẽ đi theo ngược chiều kim đồng hồ theo các bước sau:<br>
1. Presentation layer yêu cầu BLL lấy dùm vài object, ví dụ thông tin 1 person.<br>
2. BLL có thể thực hiện các kiểm tra (validation) (ví dụ, người dùng hiện tại có được phép gọi hàm này hay không?) và chuyển yêu cầu đến DAL.<br>
3. DAL kết nối với database và yêu cầu lấy về record.<br>
4. Khi tìm thấy record, database sẽ trả nó về DAL.<br>
5. DAL gói (wrap/ map) database data vào một custom object (ở ví dụ này là object person) và trả nó về BLL.<br>
6. Cuối cùng, BLL sẽ trả về object cho Presentation layer, và từ đó hiển thị lên web page.
			
		</div>
	</div>
</div><b><font size="4">MÔ HÌNH ỨNG DỤNG Client/Server 3 lớp(business logic 3-Tier)</font></b><br>
<b><font size="4">Nhược điểm của mô hình 2 lớp:</font></b><br>
<b>- Tính toán tập trung ở phía Client (Fat client – Thin Server):</b><br>
+ Khó nâng cấp vì phải cập nhật lại phần mềm ở toàn bộ các client.<br>
+ Do mọi thao tác trên CSDL đều thông qua mạng giữa client và server nên tốc độ của hệ thống sẽ chậm đi.<br>
<b>- Tính toán tập trung ở phía Server (Fat Server – Thin Client):</b> <br>
+ Việc sửa đổi hoặc mở rộng sever trở nên không khả thi và tốn kém vì mã lệnh bị trộn giữa nghiệp vụ và cơ sở dữ liệu.<br>
+ Server dễ bị quá tải do phải đáp ứng quá nhiều nhiệm vụ (cả bussiness logic và database). Nếu chia ra nhiều server thì dữ liệu bị phân tán.<br>
<font size="4"><b>Mô hình 3 lớp:</b></font><br>
Mô hình này bổ sung một server tương tác giữa Client và Database Server gọi là <b>Application Server.</b><br>
<font size="4">-Client:</font> <br>
Là các web Browser đã có sẵn (như Internet Explorer, Firefox, Opera ...) và chỉ hiểu ngôn ngữ HTML (hiện các Browser mới hiểu thêm được cả XHTML, XML). Một Browser có thể dùng để truy cập nhiều trang web và không thể thực hiện chức năng xử lý tính toán nào.<br>
<font size="4">-Application Server hay Web Server: </font><br>
Web Server (máy phục vụ Web): máy tính mà trên đó cài đặt phần mềm phục vụ Web, đôi khi người ta cũng gọi chính phần mềm đó là Web Server. <br>
Tất cả các Web Server đều hiểu và chạy được các file <font color="#ff0000"><b>*.htm</b></font> và <font color="#ff0000"><b>*.html</b></font>, tuy nhiên mỗi Web Server lại phục vụ một số kiểu file chuyên biệt chẳng hạn như IIS của Microsoft dành cho *.<b>asp</b> và *.<b>aspx</b>, Apache dành cho *.<b>php, </b>Sun Java System Web Server của SUN dành cho <b>*.jsp</b> ... <br>
-Thực hiện các yêu cầu mà Web Browser gởi tới.<br>
- Kết quả thực hiện của các đối tượng chạy trên Web Server phải ở dạng HTML, XHTML, XML.<br>
<font size="4">-Database Server (máy chủ cơ sở dữ liệu):</font><br>
Máy tính mà trên đó có cài đặt Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Chúng ta có một số RDBMS chẳng hạn như: <b>SQL Server</b>, <b>MySQL</b>, <b>Oracle</b> ... Thực hiện mọi thao tác trên cơ sở dữ liệu do Web Server yêu cầu.<br>
 <br>
<font size="4"><font color="blue">Ưu điểm của mô hình 3 lớp:</font></font><br>
<b>- Hỗ trợ nhiều người dùng hơn.</b><br>
<b>- Loại bỏ hoàn toàn sự phụ thuộc của Client.</b><br>
- Business logic được chứa trong lớp Application Server nên có những ưu điểm:<br>
+ <b>Khả năng bảo mật và an toàn hệ thống tốt hơn:</b> Lớp GUI không hề chứa mã lệnh thao tác trực tiếp trên CSDL, mà chỉ chứa các yêu cầu phục vụ đến lớp thứ 2. Vì vậy nếu nhà phát triển phân tích và xây dựng các<br>
phương thức phục vụ ở lớp business logic kỹ lưỡng và an toàn thì hệ thống sẽ đạt độ bảo mật rất cao.<br>
+ <b>Dễ mở rộng:</b> bằng cách dùng nhiều Application Server (không dùng nhiều Database Server vì khi đó dữ liệu sẽ bị phân tán).<br>
- <b>Dễ quản lý:</b> việc nâng cấp, sửa đổi có thể thực hiện ở tầng vật lý tương ứng.<br>
 <br>
<font size="4"><font color="red">Nhược điểm của mô hình 3 lớp:</font></font><br>
<b>- Tốn nhiều công sức cài đặt (nhiều server) hơn.</b><br>
 <br>
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				<b><font color="#ff0000">Lưu ý 3-layer và 3-tier là hai khai niệm khác nhau, nói đến layer là nói đến cách tổ chức ứng dụng (vd các package trong java), còn tier là ám chỉ sự tách bạch về mặt vật lý ( client - app server - data server).</font></b><br>
<b><font color="#ff0000">3 tầng cũng chưa phải là nhiều. Hiện tại thì người ta còn chia nhỏ BLL ra thành nhiều tầng nữa. Do đó khái niệm đúng là ta dùng n-tier trong web application</font></b><br>
<div style="text-align: right;"><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fwww.caulacbovb.com%2Fforum%2Fviewtopic.php%3Ff%3D8%26t%3D3601" rel="nofollow" target="_blank">caulacbovb.com</a></div>
			
		</div>
	</div>
</div>
		<h4 style="margin-top:1em"><br>Các bài viết cùng chuyên mục:</h4>
		<ul style="margin:0.7em 2em;">
		<li><a title="Form_Cac pro giup e" href="http://congdongso.com/diendan/showthread.php?120137">Form_Cac pro giup e</a> 10/03/2012</li>
		 
		<li><a title="Ứng dụng script# biên dịch mã nguồn c# sang javascript trong visual studio." href="http://congdongso.com/diendan/showthread.php?88118">Ứng dụng script# biên dịch mã nguồn c# sang javascript trong visual studio.</a> 11/08/2011</li>
		 
		<li><a title="Giúp mình bài tập này với.Thank" href="http://congdongso.com/diendan/showthread.php?36642">Giúp mình bài tập này với.Thank</a> 13/05/2011</li>
		 
		<li><a title="Ai giúp mình làm Ajax trang JSP với thẻ &lt;select&gt;&lt;option&gt;" href="http://congdongso.com/diendan/showthread.php?33037">Ai giúp mình làm Ajax trang JSP với thẻ &lt;select&gt;&lt;option&gt;</a> 08/05/2011</li>
		 
		<li><a title="Bảng xếp hạng các ngôn ngữ lập trình tháng 3/2011 (Tiobe)" href="http://congdongso.com/diendan/showthread.php?11697">Bảng xếp hạng các ngôn ngữ lập trình tháng 3/2011 (Tiobe)</a> 16/03/2011</li>
		 
		<li><a title="xin giúp đỡ đồ án java" href="http://congdongso.com/diendan/showthread.php?8435">xin giúp đỡ đồ án java</a> 25/11/2010</li>
		 
		<li><a title="35 bài tập tham khảo làm quen với JAVA" href="http://congdongso.com/diendan/showthread.php?7830">35 bài tập tham khảo làm quen với JAVA</a> 22/08/2010</li>
		 
		<li><a title="Tổng hợp các topic đáng chú ý trong Box JAVA" href="http://congdongso.com/diendan/showthread.php?7829">Tổng hợp các topic đáng chú ý trong Box JAVA</a> 22/08/2010</li>
		 
		<li><a title="Giải thích ý nghĩa và cách dùng các từ khoá trong Java" href="http://congdongso.com/diendan/showthread.php?7828">Giải thích ý nghĩa và cách dùng các từ khoá trong Java</a> 22/08/2010</li>
		 
		<li><a title="có ai giup mình với ko bài toán tháp hà nội java" href="http://congdongso.com/diendan/showthread.php?7812">có ai giup mình với ko bài toán tháp hà nội java</a> 19/08/2010</li>
		 
		<li><a title="Bài tập môn gaj cho các bạn nè" href="http://congdongso.com/diendan/showthread.php?7590">Bài tập môn gaj cho các bạn nè</a> 06/08/2010</li>
		 
		<li><a title="Tổng hợp ebook học lập trình j2me" href="http://congdongso.com/diendan/showthread.php?7164">Tổng hợp ebook học lập trình j2me</a> 17/07/2010</li>
		 
		<li><a title="Bộ Đĩa CD Học Java Của Aptech( Tiếng Việt)" href="http://congdongso.com/diendan/showthread.php?6703">Bộ Đĩa CD Học Java Của Aptech( Tiếng Việt)</a> 22/06/2010</li>
		 
		<li><a title="Đề thi môn java có lời giải" href="http://congdongso.com/diendan/showthread.php?6068">Đề thi môn java có lời giải</a> 16/05/2010</li>
		 
		<li><a title="Đề thi môn java by example nè" href="http://congdongso.com/diendan/showthread.php?6063">Đề thi môn java by example nè</a> 16/05/2010</li>
		 </ul>
		 
						</blockquote>
					</div>

					
				</div>
			</div>
			
			<div class="after_content">
				
				<!-- edit note -->
				<blockquote class="postcontent lastedited">
					
						Last edited by river_11576; 25-04-2010 at <span class="time">19:49</span>.
					
					
				</blockquote>
				<!-- / edit note -->
				
				
				
					 
				
				
				
			</div>
			
			<div class="cleardiv"></div>
		</div>
	</div>
		<div class="postfoot">
			<!-- <div class="postfoot_container"> -->
			<div class="textcontrols floatcontainer">
				<span class="postcontrols">
					<img style="display:none" id="progress_7549" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/progress.gif" alt="">
					
					
					
						<a id="qrwq_7549" class="newreply" href="http://congdongso.com/diendan/newreply.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newreply&p=7549" rel="nofollow" title="Trả lời kèm Trích dẫn"><img id="quoteimg_7549" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/clear.gif" alt="Trả lời kèm Trích dẫn" title="Trả lời kèm Trích dẫn">  Trả lời kèm Trích dẫn</a> 
					
					
					
				</span>
				<span class="postlinking">
					
						
					

					
					
					
					

					
					

					
					
					
					
					
				</span>
			<!-- </div> -->
			</div>
		</div>
	<hr>
</li>

<li class="postbitlegacy postbitim postcontainer old" id="post_7562">
<!-- see bottom of postbit.css for .userinfo .popupmenu styles -->

	<div class="posthead">
			<span class="postdate old">
				
					<span class="date">17-09-2009,&nbsp;<span class="time">12:36</span></span>
				
			</span>
			<span class="nodecontrols">
				
					<a name="post7562" href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern.html?s=91392ada43de74d14b61d2ecc3a60ac7&p=7562&viewfull=1#post7562" class="postcounter">#2</a><a id="postcount7562" name="2"></a>
				
				
				
			</span>
	</div>
	<div class="postdetails">
		<div class="userinfo">
			<div class="username_container">
			
				<span class="username guest">kjd_9x</span>
			
			</div>
			<span class="usertitle">
				Guest
			</span>
			
			
			
			 
			
		</div>
		<div class="postbody">
			<div class="postrow">
				
				
				<h2 class="title icon">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/icon1.png" alt="Mặc định" title="Mặc định"> Ðề: Slide kiến trúc 3 lớp
				</h2>
				


						
						
				<div class="content">
					<div id="post_message_7562">
						<blockquote class="postcontent restore ">
							Kiến trúc 3 lớp này khác với mô hình 3 lớp Model- Controller - View thế nào hả cậu.<br>
Mô hình 3 lớp MCV hình như thiết kế template trong file HTML ,sử lí trong Bean và chạy trong jsp đúng không nhỉ?<br>
cậu có bài nào demo không.tìm giúp tớ với.<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/1.gif" border="0" alt="" title="happy" class="inlineimg">
						</blockquote>
					</div>

					
				</div>
			</div>
			
			<div class="cleardiv"></div>
		</div>
	</div>
		<div class="postfoot">
			<!-- <div class="postfoot_container"> -->
			<div class="textcontrols floatcontainer">
				<span class="postcontrols">
					<img style="display:none" id="progress_7562" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/progress.gif" alt="">
					
					
					
						<a id="qrwq_7562" class="newreply" href="http://congdongso.com/diendan/newreply.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newreply&p=7562" rel="nofollow" title="Trả lời kèm Trích dẫn"><img id="quoteimg_7562" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/clear.gif" alt="Trả lời kèm Trích dẫn" title="Trả lời kèm Trích dẫn">  Trả lời kèm Trích dẫn</a> 
					
					
					
				</span>
				<span class="postlinking">
					
						
					

					
					
					
					

					
					

					
					
					
					
					
				</span>
			<!-- </div> -->
			</div>
		</div>
	<hr>
</li>

<li class="postbitlegacy postbitim postcontainer old" id="post_7566">
<!-- see bottom of postbit.css for .userinfo .popupmenu styles -->

	<div class="posthead">
			<span class="postdate old">
				
					<span class="date">17-09-2009,&nbsp;<span class="time">17:37</span></span>
				
			</span>
			<span class="nodecontrols">
				
					<a name="post7566" href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern.html?s=91392ada43de74d14b61d2ecc3a60ac7&p=7566&viewfull=1#post7566" class="postcounter">#3</a><a id="postcount7566" name="3"></a>
				
				
				
			</span>
	</div>
	<div class="postdetails">
		<div class="userinfo">
			<div class="username_container">
			
				<div class="popupmenu memberaction" id="yui-gen11">
	<a class="username offline popupctrl" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến" id="yui-gen13"><strong><span style="color: black;">river_11576</span></strong></a>
	<ul class="popupbody memberaction_body" id="yui-gen12">
		<li class="left">
			<a href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" class="siteicon_profile">
				Xem Hồ sơ
			</a>
		</li>
		
		<li class="right">
			<a href="http://congdongso.com/diendan/search.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=finduser&userid=8&contenttype=vBForum_Post&showposts=1" class="siteicon_forum" rel="nofollow">
				Xem bài viết diễn đàn
			</a>
		</li>
		
		
		<li class="left">
			<a href="http://congdongso.com/diendan/private.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newpm&u=8" class="siteicon_message" rel="nofollow">
				Tin nhắn riêng
			</a>
		</li>
		
		
		
		
		
		
		

		

		
		
	</ul>
</div>
				<img class="inlineimg onlinestatus" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/user-offline.png" alt="river_11576 Đang Ngoại tuyến" border="0" title="river_11576 Đang Ngoại tuyến">

			
			</div>
			<span class="usertitle">
				
			</span>
			
				<span class="rank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/star6.gif" alt="" border=""></span>
			
			
			
			
			<a class="postuseravatar" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến">
				<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/image.php" alt="river_11576&#39;s Avatar" title="river_11576&#39;s Avatar">
			</a>
			 
			
				<hr>
				<dl class="userinfo_extra">
					<dt>Tham gia</dt> <dd>Dec 2008</dd>
					
					
					<dt>Bài viết</dt> <dd>1.050</dd>	
					
				</dl>
				
				
				<div class="imlinks">
					    
				</div>
			
		</div>
		<div class="postbody">
			<div class="postrow has_after_content">
				
				
				<h2 class="title icon">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/icon1.png" alt="Mặc định" title="Mặc định"> So sanh' với MVC
				</h2>
				


						
						
				<div class="content">
					<div id="post_message_7566">
						<blockquote class="postcontent restore ">
							<span style="font-family: Arial"><b>Phương pháp thiết kế MVC bắt nguồn từ việc phát triển giao diện người dùng trong ngôn ngữ lập trình Smalltalk, đây là một trong những phương pháp thiết kế thành công nhất trong các phương pháp thiết kế hướng đối tượng. Hiện nay, MVC được dùng rộng rãi trong nhiều hệ thống phần mềm.</b>[/QUOTE]</span><br>
 <br>
<span style="font-family: Arial">- <font color="blue"><b>Model</b></font>: Model được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ người dùng sẽ thông qua View đến Controller và được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model. Do có 2 vai trò tương đối tách biệt cho nên một Model thường được tách thành các lớp có các domain xử lý khác biệt:</span><br>
<span style="font-family: Arial">+ Business logic thường là xử lý rule hay policy của nghiệp vụ cũng như business workflows.</span><br>
<span style="font-family: Arial">+ Domain data: Cung cấp/lưu trữ dữ liệu và việc chuyển đổi dữ liệu thành các dạng khác nhau theo yêu cầu</span><br>
- <b><font color="darkorange">View:</font></b><span style="font-family: Arial"> View hiển thị các thông tin cho người dùng của ứng dụng và được giao nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đi các yêu cầu đến controller, sau đó là nhận lại các phản hồi từ controller và hiển kết quả cho người dùng. Các trang HTML, JSP, các thư viện thẻ và các file nguồn là một phần của thành phần View.</span><br>
<span style="font-family: Arial">Trong các web framework, nó gồm 2 phần chính:</span><br>
<span style="font-family: Arial">+ Template file định nghĩa cấu trúc và cách thức trình bày dữ liệu cho user. Ví dụ như layout, color, windows …</span><br>
<span style="font-family: Arial">+ Logic xử lý cách áp dụng dữ liệu vào cấu trúc trình bày. Logic này có thể bao gồm việc kiểm tra định dạng dữ liệu, chuyển đổi định dạng dữ liệu sang một sạng dữ liệu trung gian, lựa chọn một cấu trúc hiện thị phù hợp.</span><br>
<span style="font-family: Arial">- <font color="green"><b>Controller</b></font>: c</span>ontroller đảm nhiệm việc cập nhật bộ phận hiển thị (View) khi cần thiết. Bộ điều khiển này nhận dữ liệu nhập từ người dùng, truy xuất các thông tin cần thiết từ mô hình trong (Model), và cập nhật thích hợp phần hiển thị (View). Giao diện với người sử dụng phần mềm được thiết lập nhờ sự tương tác qua lại giữa View và <br>
Controller: hai bộ phận này chính là phần trình bày bên ngoài của đối tượng biểu diễn bên trong.<br>
<b>Martin Fowler chia MVC thành hai phiên bản là Passive View và Supervising Controller.</b><br>
<a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fwww.pcworld.com.vn%2Fpcworld%2Finfo%2Fmisc%2F2009%2F8%2FA0908_119a.jpg" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fwww.pcworld.com.vn%2Fpcworld%2Finfo%2Fmisc%2F2009%2F8%2FA0908_119a.jpg" rel="nofollow" target="_blank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/A0908_119a.jpg" border="0" alt=""></a> <br>
<span style="font-family: arial"><font color="#000000"><span style="font-family: Arial">Trong mẫu Passive View, thành phần View được loại bỏ hoàn toàn các xử lý logic và tương tác đến Model. Thay vì vậy, nó chuyển giao các xử lý cho Controller đảm trách. Controller đảm nhận tương tác đến Model và cập nhật View khi có thay đổi từ Model. Controller là thành phần trung gian liên lạc giữa View và Model.</span></font><br>
 <br>
<span style="font-family: Arial"><font color="#000000">Trong mẫu Supervising Controller, View đầu tiên bắt lấy các sự kiện và sau đó chuyển giao cho Controller xử lý. Để cập nhật thay đổi từ Model, View dùng data-binding và Observer Pattern cho các xử lý đơn giản còn đối với các xử lý phức tạp sẽ nhờ đến Controller</font></span></span><br>
 <br>
<span style="font-family: Arial"><font size="4">So sánh MVC và 3-layer/tier:</font></span><br>
 <br>
<span style="font-family: Arial"><font color="blue"><b>Giống nhau:</b></font></span><br>
<span style="font-family: Arial">- Cả hai đều để tách rời programming core/business logic ra khỏi những phụ thuộc về tài nguyên và môi trường.</span><br>
<span style="font-family: Arial">- Trong một ứng dụng nhỏ, MVC thể hiện thế nào? Presentation thể hiện giống như chức năng của View và Controller. Business và Database thể hiện giống như chức năng của Model. Như thế nhìn ở góc độ này, thì MVC tương đương với <b>3-layer</b> (tất nhiên có chồng chéo như hình vẽ)</span><br>
<a href="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/0.888882001253204632.png" rel="nofollow" target="_blank"></a><a href="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/0.888882001253204632.png" rel="nofollow" target="_blank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/0.888882001253204632.png" border="0" alt=""></a><br>
<span style="font-family: Arial"><font color="red"><b>Khác nhau:</b></font></span><br>
<font color="#000000"><font color="#222222"><span style="font-family: Georgia"><span style="font-family: Arial">Trong 3-layers, quá trình đi theo chiều dọc, bắt đầu từ Presentation, sang BL, rồi tới Data, và từ Data, chạy ngược lại BL rồi quay ra lại Presentation.</span></span></font><br>
<span style="font-family: Georgia"><font color="#000000"><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png" rel="nofollow" target="_blank"><span style="font-family: Arial"></span></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2F3-layes.png%3Fw%3D169%26h%3D339" rel="nofollow" target="_blank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/3-layes.png" border="0" alt=""></a></font></span><br>
<font color="#000000"><span style="font-family: Arial">Còn trong mẫu Supervising Controller, dữ liệu được nhận bởi View, View sẽ chuyển cho Controller cập nhật vào Model, rồi sau đó dữ liệu trong Model sẽ được đưa lại cho View mà không thông qua Controller, do vậy luồng xử lý này có hình tam giác.</span></font><br>
<font color="#000000"><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png" rel="nofollow" target="_blank"><span style="font-family: Arial"></span></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250" rel="nofollow" target="_blank"></a><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fnamdh.files.wordpress.com%2F2009%2F12%2Fmvc.png%3Fw%3D411%26h%3D250" rel="nofollow" target="_blank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/mvc.png" border="0" alt=""></a></font><br>
</font><br>
 <br>
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				<div class="bbcode_postedby">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/quote_icon.png" alt="Trích dẫn" title="Trích dẫn"> Gửi bởi <strong>MSDN</strong>
					
				</div>
				<div class="message"><b>User Interface Process Components</b><br>
Complex user interfaces often require many highly complex forms. To increase reusability, maintainability, and extensibility, you can create a separate user interface process (UIP) component to encapsulate dependencies between forms and the logic associated with navigating between them. You can apply the same concept to the dependencies, validation, and navigation between components of a single form. These UIP components are typically custom components that are based on design patterns such as Front Controller, Application Controller, and Mediator.<br>
The interaction between UI and UIP components often follows the Model-View-Controller or Presentation-Abstraction-Controller pattern.</div>
			
		</div>
	</div>
</div><font size="4">"</font>Như vậy theo hướng dẫn của MSDN thì <b>MVC</b> thuộc UI Process Components <b>trong Presentation Layer</b>, chứ không phải là cách chia toàn bộ một application ra thành 3 layer là Model – View – Controller.<font size="4">"</font><br>
<div style="text-align: right;"><a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fforums.congdongcviet.com%2Fshowthread.php%3Fp%3D69352" rel="nofollow" target="_blank">congdongcviet</a></div> <br>
<span style="font-family: Arial">Thông thường khi áp dụng thì người ta kết hợp cả 2: MVC được áp dụng bên phía Client. Sau đó 3 tiers được áp dụng như bình thường trên hệ thống client-server. Việc có sử dụng hay là có <b>bọc lẫn nhau giữa MVC và 3-tier</b> là không hoàn toàn bắt buộc, ta có thể sử dụng MVC mà không cần đến 3-tier (với những ứng dụng nhỏ)</span>
						</blockquote>
					</div>

					
				</div>
			</div>
			
			<div class="after_content">
				
				<!-- edit note -->
				<blockquote class="postcontent lastedited">
					
						Last edited by river_11576; 25-04-2010 at <span class="time">21:00</span>.
					
					
				</blockquote>
				<!-- / edit note -->
				
				
				
				
				
			</div>
			
			<div class="cleardiv"></div>
		</div>
	</div>
		<div class="postfoot">
			<!-- <div class="postfoot_container"> -->
			<div class="textcontrols floatcontainer">
				<span class="postcontrols">
					<img style="display:none" id="progress_7566" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/progress.gif" alt="">
					
					
					
						<a id="qrwq_7566" class="newreply" href="http://congdongso.com/diendan/newreply.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newreply&p=7566" rel="nofollow" title="Trả lời kèm Trích dẫn"><img id="quoteimg_7566" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/clear.gif" alt="Trả lời kèm Trích dẫn" title="Trả lời kèm Trích dẫn">  Trả lời kèm Trích dẫn</a> 
					
					
					
				</span>
				<span class="postlinking">
					
						
					

					
					
					
					

					
					

					
					
					
					
					
				</span>
			<!-- </div> -->
			</div>
		</div>
	<hr>
</li>

<li class="postbitlegacy postbitim postcontainer old" id="post_7616">
<!-- see bottom of postbit.css for .userinfo .popupmenu styles -->

	<div class="posthead">
			<span class="postdate old">
				
					<span class="date">19-09-2009,&nbsp;<span class="time">15:00</span></span>
				
			</span>
			<span class="nodecontrols">
				
					<a name="post7616" href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern.html?s=91392ada43de74d14b61d2ecc3a60ac7&p=7616&viewfull=1#post7616" class="postcounter">#4</a><a id="postcount7616" name="4"></a>
				
				
				
			</span>
	</div>
	<div class="postdetails">
		<div class="userinfo">
			<div class="username_container">
			
				<div class="popupmenu memberaction" id="yui-gen14">
	<a class="username offline popupctrl" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến" id="yui-gen16"><strong><span style="color: black;">river_11576</span></strong></a>
	<ul class="popupbody memberaction_body" id="yui-gen15">
		<li class="left">
			<a href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" class="siteicon_profile">
				Xem Hồ sơ
			</a>
		</li>
		
		<li class="right">
			<a href="http://congdongso.com/diendan/search.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=finduser&userid=8&contenttype=vBForum_Post&showposts=1" class="siteicon_forum" rel="nofollow">
				Xem bài viết diễn đàn
			</a>
		</li>
		
		
		<li class="left">
			<a href="http://congdongso.com/diendan/private.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newpm&u=8" class="siteicon_message" rel="nofollow">
				Tin nhắn riêng
			</a>
		</li>
		
		
		
		
		
		
		

		

		
		
	</ul>
</div>
				<img class="inlineimg onlinestatus" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/user-offline.png" alt="river_11576 Đang Ngoại tuyến" border="0" title="river_11576 Đang Ngoại tuyến">

			
			</div>
			<span class="usertitle">
				
			</span>
			
				<span class="rank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/star6.gif" alt="" border=""></span>
			
			
			
			
			<a class="postuseravatar" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến">
				<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/image.php" alt="river_11576&#39;s Avatar" title="river_11576&#39;s Avatar">
			</a>
			 
			
				<hr>
				<dl class="userinfo_extra">
					<dt>Tham gia</dt> <dd>Dec 2008</dd>
					
					
					<dt>Bài viết</dt> <dd>1.050</dd>	
					
				</dl>
				
				
				<div class="imlinks">
					    
				</div>
			
		</div>
		<div class="postbody">
			<div class="postrow has_after_content">
				
				
				<h2 class="title icon">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/icon1.png" alt="Mặc định" title="Mặc định"> Ðề: Slide kiến trúc 3 lớp
				</h2>
				


						
						
				<div class="content">
					<div id="post_message_7616">
						<blockquote class="postcontent restore ">
							<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				<div class="bbcode_postedby">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/quote_icon.png" alt="Trích dẫn" title="Trích dẫn"> Gửi bởi <strong>kjd_9x</strong>
					<a href="http://congdongso.com/diendan/showthread.php?s=91392ada43de74d14b61d2ecc3a60ac7&p=7562#post7562" rel="nofollow"><img class="inlineimg" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/viewpost-right.png" alt="Xem bài viết" title="Xem bài viết"></a>
				</div>
				<div class="message">Mô hình 3 lớp MCV hình như thiết kế template trong file HTML ,sử lí trong Bean và chạy trong jsp đúng không nhỉ?<br>
cậu có bài nào demo không.tìm giúp tớ với.<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/1.gif" border="0" alt="" title="happy" class="inlineimg"></div>
			
		</div>
	</div>
</div><b><i>Bài viết sau đây giới thiệu tổng quan về phương pháp thiết kế MVC, và minh họa cách sử dụng MVC trong thiết kế hướng đối tượng bằng việc xây dựng chương trình Java Web Mail, sử dụng JSP, Servlet và Java Mail API:</i></b><br>
 <br>
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				<div class="bbcode_postedby">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/quote_icon.png" alt="Trích dẫn" title="Trích dẫn"> Gửi bởi <strong>Châu Hồng Lĩnh</strong>
					
				</div>
				<div class="message">Java là một ngôn ngữ lập trình hướng đối tượng thuần túy nên việc áp dụng MVC vào các phần mềm viết bằng Java rất dễ dàng và hiển nhiên. Có hai hình mẫu chính của phương pháp thiết kế MVC trong Java là MVC Model 1 và MVC Model 2.<br>
Dưới đây là sơ đồ của MVC model 1: <br>
<img src="http://www.vnicts.com/uploads/forum.tinhoc247.com/0617/mvc_model_1.gif" border="0" alt=""><br>
<br>
Trong MVC model 1, các trang JSP đóng vai trò Hiển thị (View) và Điều khiển (Controller). Có thể có nhiều trang JSP khác nhau đóng các vai trò khác nhau.<br>
<br>
    * Khi người sử dụng dùng các nút bấm, menu hoặc link … trên trình duyệt Web (Web browser) để thực hiện một thao tác, một lệnh (có thể kèm theo các tham số) được gửi tới một trang JSP tương ứng.<br>
    * Trang JSP này sẽ khởi tạo một hoặc nhiều  Java Bean (nếu cần thiết), truyền các lệnh cần thi hành tới Java Bean. Chú ý rằng đây là các Java Bean thông thường, chứ không phải Enterprise Java Bean (EJB)<br>
    * Sau khi Java Bean thực hiện xong việc truy xuất hoặc cập nhật dữ liệu, trang JSP ban đầu có thể hiển thị dữ liệu lấy từ Bean (JSP ban đầu đóng luôn vai trò View), hoặc chọn một trang JSP khác để hiện dữ liệu từ Bean (JSP ban đầu đóng luôn vai trò Controller). Trong một thiết kế tốt, để bảo đảm việc tách rời phần trình bày và logic của chương trình, trang JSP nhận request chỉ đóng vai trò Điều khiển (Controller).<br>
<br>
MVC model 1 có  một nhược điểm là phần logic điều khiển được viết trong trang JSP, như vậy phần chương trình Java phức tạp dùng để điều khiển sẽ bị lẫn vào trong mã HTML dùng để trình bày. Độ phức tạp của chương trình càng cao, thì trang JSP càng khó bảo trì.  Hơn nữa trong các dự án phần mềm phức tạp, thì phẩn hiển thị của trang JSP thường được làm bởi người thiết kế Web, giỏi về HTML và đồ họa, còn phần chương trình Java được viết bởi lập trình viên chuyên về lập trình. Trong các dự án phức tạp, dùng JSP làm phần điều khiển sẽ làm lẫn lộn việc phân chia ranh giới trách nhiệm giữa nhóm thiết kế đồ họa và nhóm lập trình, đôi khi dẫn đến việc bảo trì và phát triển trở nên rất khó khăn, gần như không thể làm được.<br>
<br>
Để khắc phục nhược điểm này, MVC model 2 ra đời. Dưới đây là sơ đồ của MVC model 2: <br>
<img src="http://www.vnicts.com/uploads/forum.tinhoc247.com/0617/mvc_model_2.gif" border="0" alt=""><br>
<br>
Trong MVC model 2, một hoặc nhiều servlet (thường là một) đóng vai trò Điều khiển, các Java Bean đóng vai trò Mô hình và các trang JSP đóng vai trò hiển thị.<br>
<br>
Trong model 2, các logic phức tạp của chương trình được viết hoàn toàn trong các servlet, là các chương trình Java. Phần hiển thị chỉ gồm các trang JSP với một vài mã đơn giản để lấy dữ liệu có sẵn, không có logic phức tạp, vì thế hoàn toàn có thể được tạo ra bằng những người thiết kế Web.<br>
<br>
Các yêu cầu của người dùng được gửi từ trình duyệt Web tới servlet. Servlet sẽ khởi tạo Java Bean (nếu cần thiết), ra lệnh thu thập, cập nhật thông tin. Khi Java Bean hoàn thành công việc, servlet sẽ chọn trang JSP thích hợp để hiện thông tin trong Java Bean cho người dùng.<br>
<br>
Đây là một cách sử dụng MVC rất hiệu quả trong Java. Tất nhiên, sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần “Điều khiển” chỉ dùng servlet, phần “Hiển thị” chỉ dùng JSP sẽ dẫn đến một vài trường hợp kém hiệu quả, nhất là khi các yêu cầu từ trình duyệt web chỉ đòi hỏi việc hiển thị thông tin.<br>
 <br>
Ví dụ:  một trang Web đang hiện các mail trong mail box từ mail thứ 20 đến mail thứ 40. Danh sách các mail này đã có sẵn phần Mô hình khi người dùng login và phần Điều khiển ra lệnh cho phần Mô hình lấy danh sách các mail có trong mail box trong POP server. Từ trang Web này, người dùng phát ra một yêu cầu “Next” để xem tiếp danh sách các mail từ mail thứ 40 đến mail thứ 60. Đây đơn thuần chỉ là đòi hỏi thông tin hiển thị, do đó, nếu gửi qua servlet Điều khiển , servlet sẽ không làm gì cả, mà chỉ gửi yêu cầu hiển thị tới trang JSP hiển thị danh sách mail. Trong trường hợp này, gửi thẳng yêu cầu hiển thị từ trình duyệt Web tới trang JSP sẽ hiệu quả hơn.<br>
<br>
Sơ đồ cho cách áp dụng MVC nói trên như sau: <br>
<img src="http://www.vnicts.com/uploads/forum.tinhoc247.com/0617/mvc_model_3.gif" border="0" alt=""><br>
Trong cách áp dụng MVC này, các yêu cầu có liên quan đến logic chương trình hoặc truy cập dữ liệu sẽ được gửi tới servlet controller, còn các yêu cầu chỉ liên quan tới hiển thị sẽ được gửi tới JSP controller.<br>
<br>
Đây chính là cách tôi chọn để cài đặt chương trình Java Web Mail.<br>
<br>
Chương trình Java Web Mail bao gồm các thành phần sau :<br>
<br>
    * Một servlet controller MailUtilServlet, dùng để nhận các yêu cầu: login, logout, gửi mail, hiện attachment. Những yêu cầu này sẽ được xử lý về mặt logic rồi gửi tới Java Bean để thực sự làm công việc truy cập mail server. Sau khi Java Bean thực hiện việc truy cập dữi liệu xong, MailUtilServlet sẽ chọn trang JSP thích hợp để hiện dữ liệu.<br>
    * Một Java Bean MailUserBean dùng để truy cập mail server, lấy danh sách và mội dung mail trong mail box, xóa mail trong server.<br>
    * Trang JSP index.jsp đóng vai trò JSP controller, dùng để nhận các yêu cầu: hiện danh sách các mail trong mail box, hiện nội dung của một mail được chọn trong danh sách, hiện trang soạn thảo mail để người dùng soạn thảo và gửi mail. Những thông tin cần để hiển thị đã có sẵn trong MailUserBean, vì MailUserBean đã lấy những thông tin này khi nhận được yêu cầu login từ MailUtilServlet. Vì thế, những loại yêu cầu này thuộc về loại yêu cầu hiển thị, không có logic phức tạp, nên không cần phải gửi qua MailUtilServlet.<br>
    * Một tập hợp các trang JSP:<br>
          o menu.jsp dùng để hiện menu lệnh bao gồm Log in, Inbox, Compose và Exit<br>
          o first.jsp  là trang để nhập username, password, mailserver cho việc login<br>
          o messageheaders.jsp là trang để hiện danh sách các mail có trong mail box để người dùng chọn xem và xóa mail trong mail box.<br>
          o messagecontent.jsp là trang để hiện nội dung của một mail đã được chọn từ danh sách.<br>
          o compose.jsp là trang để soạn thảo mail cần gửi.<br>
          o status.jsp là trang dùng để báo về lỗi khi log in, log out không thành công, và thông báo về kết quả gửi mail thành công hay không.<br>
          o errordetails.jsp là trang dùng để cung cấp thông tin chi tiết mỗi khi có lỗi log in, log out, gửi mail không thành công. Thông tin trong trang này bao gồm cả Stack Trace của exception khi sinh ra lỗi, chủ yếu dành cho lập trình viên dùng để xem chi tiết về vấn đề đã xảy ra.<br>
          o logout.jsp là trang hiện ra khi người dùng login ra khỏi hệ thống mail.<br>
            Một vài trang JSP và text file khác dùng để trang trí.<br>
          o Một CSS (Cascade Style Sheet) tên là styleSheet.txt, dùng để định dạng về font và màu sắc cho tất cả các file JSP.<br>
<br>
Trong hệ thống này, không có database sever. MailUserBean lấy và cập nhật dữ liệu từ POP mail server, gửi mail từ SMTP server, sử dụng Java Mail API.<br>
<br>
Chương trình gồm có các chức năng sau:<br>
<br>
    - Sử dụng HTTP để đọc và gửi mail từ bất kỳ một mail server nào dùng POP3 Protocol trên Internet hoặc trong Intranet.<br>
    - Có thể truy cập mail qua bất kỳ một proxy server nào có chức năng HTTP proxy. Chức năng này rất có ích khi người dùng kết nối vào Internet từ một mạng Intranet phía sau một firewall, và firewall này ngăn chặn các máy tính trong Intranet truy cập POP server bên ngoài, trong khi đó, người sử dụng muốn gửi và nhận mail từ một POP server trên Internet.<br>
    - Sử dụng khả năng xử lý các loại dữ liệu (content handling) của trình duyệt Web để hiện Attachment. </div>
			
		</div>
	</div>
</div><font size="4">Bạn đọc có thể <a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fwww.quantrimang.com.vn%2Fdownload%2Febooks%2Fjavawebmailsource.zip" rel="nofollow" target="_blank"><b>tải về toàn bộ mã nguồn chương trình ở đây</b></a></font><br>
 <br>
<div style="text-align: right;"><b><font color="#0060bf">Châu Hồng Lĩnh</font></b><br>
<b><font color="#0060bf"><a href="mailto:chauhonglinh@hanoian.com">chauhonglinh@hanoian.com</a></font></b><br>
<b><font color="#0060bf">Theo PCWorld Việt Nam</font></b></div>
						</blockquote>
					</div>

					
				</div>
			</div>
			
			<div class="after_content">
				
				<!-- edit note -->
				<blockquote class="postcontent lastedited">
					
						Last edited by river_11576; 20-09-2009 at <span class="time">09:39</span>.
					
					
				</blockquote>
				<!-- / edit note -->
				
				
				
				
				
			</div>
			
			<div class="cleardiv"></div>
		</div>
	</div>
		<div class="postfoot">
			<!-- <div class="postfoot_container"> -->
			<div class="textcontrols floatcontainer">
				<span class="postcontrols">
					<img style="display:none" id="progress_7616" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/progress.gif" alt="">
					
					
					
						<a id="qrwq_7616" class="newreply" href="http://congdongso.com/diendan/newreply.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newreply&p=7616" rel="nofollow" title="Trả lời kèm Trích dẫn"><img id="quoteimg_7616" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/clear.gif" alt="Trả lời kèm Trích dẫn" title="Trả lời kèm Trích dẫn">  Trả lời kèm Trích dẫn</a> 
					
					
					
				</span>
				<span class="postlinking">
					
						
					

					
					
					
					

					
					

					
					
					
					
					
				</span>
			<!-- </div> -->
			</div>
		</div>
	<hr>
</li>

<li class="postbitlegacy postbitim postcontainer old" id="post_7636">
<!-- see bottom of postbit.css for .userinfo .popupmenu styles -->

	<div class="posthead">
			<span class="postdate old">
				
					<span class="date">20-09-2009,&nbsp;<span class="time">21:12</span></span>
				
			</span>
			<span class="nodecontrols">
				
					<a name="post7636" href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern.html?s=91392ada43de74d14b61d2ecc3a60ac7&p=7636&viewfull=1#post7636" class="postcounter">#5</a><a id="postcount7636" name="5"></a>
				
				
				
			</span>
	</div>
	<div class="postdetails">
		<div class="userinfo">
			<div class="username_container">
			
				<div class="popupmenu memberaction" id="yui-gen17">
	<a class="username offline popupctrl" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến" id="yui-gen19"><strong><span style="color: black;">river_11576</span></strong></a>
	<ul class="popupbody memberaction_body" id="yui-gen18">
		<li class="left">
			<a href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" class="siteicon_profile">
				Xem Hồ sơ
			</a>
		</li>
		
		<li class="right">
			<a href="http://congdongso.com/diendan/search.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=finduser&userid=8&contenttype=vBForum_Post&showposts=1" class="siteicon_forum" rel="nofollow">
				Xem bài viết diễn đàn
			</a>
		</li>
		
		
		<li class="left">
			<a href="http://congdongso.com/diendan/private.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newpm&u=8" class="siteicon_message" rel="nofollow">
				Tin nhắn riêng
			</a>
		</li>
		
		
		
		
		
		
		

		

		
		
	</ul>
</div>
				<img class="inlineimg onlinestatus" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/user-offline.png" alt="river_11576 Đang Ngoại tuyến" border="0" title="river_11576 Đang Ngoại tuyến">

			
			</div>
			<span class="usertitle">
				
			</span>
			
				<span class="rank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/star6.gif" alt="" border=""></span>
			
			
			
			
			<a class="postuseravatar" href="http://congdongso.com/diendan/members/8-river_11576.html?s=91392ada43de74d14b61d2ecc3a60ac7" title="river_11576 Đang Ngoại tuyến">
				<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/image.php" alt="river_11576&#39;s Avatar" title="river_11576&#39;s Avatar">
			</a>
			 
			
				<hr>
				<dl class="userinfo_extra">
					<dt>Tham gia</dt> <dd>Dec 2008</dd>
					
					
					<dt>Bài viết</dt> <dd>1.050</dd>	
					
				</dl>
				
				
				<div class="imlinks">
					    
				</div>
			
		</div>
		<div class="postbody">
			<div class="postrow has_after_content">
				
				
				<h2 class="title icon">
					<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/icon1.png" alt="Mặc định" title="Mặc định"> Ðề: Kiến trúc 3 lớp và MVC pattern
				</h2>
				


						
						
							
						
				<div class="content">
					<div id="post_message_7636">
						<blockquote class="postcontent restore ">
							<b>Tiếp theo là ví dụ sử dụng mô hình MVC để tạo 1 giỏ hàng:</b><br>
Gồm các file sau Eshop.jsp, Cart.jsp, Checkout.jsp,CD.java,ShoppingServlet.java<br>
Như dựa trên cách định nghĩa trên thì ta phân các file ở các phần trong mô hinh MVC như sau<br>
<b>Model</b> <br>
CD.java (mô phỏng đối tượng chính từ thế giới thực)<br>
Cart.jsp(trong này có xử lý cập nhật giở hàng)<br>
Checkout.jsp(Dựa trên giỏ hàng xử lý thanh toán tiền) Eshop.jsp<br>
<b>View</b><br>
Eshop.jsp (Hiển thị giở hàng)<br>
<b>Controller</b><br>
ShoppingServlet.java (Phân luồng, điều tiết )<br>
Tức là ứng với yêu cầu của trang View nào thì nó sẽ gọi thằng Model tương ứng với nó<br>
Thường thì ở phần này là các file servlet<br>
 <br>
<div style="text-align: center;"><b>Chương trình Demo viết lại trên IDE NetBean 6.5:</b><br>
<a href="http://www.mediafire.com/?zybur9yby3m" rel="nofollow" target="_blank"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/MF.png" border="0" alt="" title="MF" class="inlineimg"></a><br>
 </div><b>Nhận xét ví dụ:</b><br>
Theo đúng định nghĩa của SUN, định nghĩa về mặt hình thức (tách bạch rõ rang giữa các file) thì trong Model chỉ có các file BEAN thôi (tức là ở đây chỉ cớ các file CD.java)<br>
Nhưng định nghĩa theo khái niệm thì model nhận yêu cầu từ view thông qua thằng Controller sau đó xử lý thì Model lúc này sẽ có them Cart.jsp và Checkout.jsp<br>
Cho nên đôi khi chúng ta phải phá lệ, mềm dẻo để đạt được hiểu quả như mong muốn. Tức là Model không nhất thiết phải là các class java, nó có thể có các file jsp nhằm xử lý 1 khâu nhỏ nào đó. Tùy theo ngữ cản<br>
 <br>
<b>Tham khảo:</b><br>
<a href="http://congdongso.com/diendan/link.php?s=91392ada43de74d14b61d2ecc3a60ac7&url=http%3A%2F%2Fwww.javaworld.com%2Fjavaworld%2Fjw-12-1999%2Fjw-12-ssj-jspmvc.html%3Fpage%3D1" rel="nofollow" target="_blank">http://www.javaworld.com/javaworld/j...vc.html?page=1</a>
						</blockquote>
					</div>

					
				</div>
			</div>
			
			<div class="after_content">
				
				<!-- edit note -->
				<blockquote class="postcontent lastedited">
					
						Last edited by river_11576; 20-09-2009 at <span class="time">21:15</span>.
					
					
				</blockquote>
				<!-- / edit note -->
				
				
				
				
				
			</div>
			
			<div class="cleardiv"></div>
		</div>
	</div>
		<div class="postfoot">
			<!-- <div class="postfoot_container"> -->
			<div class="textcontrols floatcontainer">
				<span class="postcontrols">
					<img style="display:none" id="progress_7636" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/progress.gif" alt="">
					
					
					
						<a id="qrwq_7636" class="newreply" href="http://congdongso.com/diendan/newreply.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=newreply&p=7636" rel="nofollow" title="Trả lời kèm Trích dẫn"><img id="quoteimg_7636" src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/clear.gif" alt="Trả lời kèm Trích dẫn" title="Trả lời kèm Trích dẫn">  Trả lời kèm Trích dẫn</a> 
					
					
					
				</span>
				<span class="postlinking">
					
						
					

					
					
					
					

					
					

					
					
					
					
					
				</span>
			<!-- </div> -->
			</div>
		</div>
	<hr>
</li>

		</ol>
		<div class="separator"></div>
		<div class="postlistfoot">
			
		</div>

	

</div>

<div id="below_postlist" class="noinlinemod below_postlist">
	
		<a href="http://congdongso.com/diendan/newreply.php?s=91392ada43de74d14b61d2ecc3a60ac7&p=7636&noquote=1" class="newcontent_textcontrol" id="newreplylink_bottom"><span>+</span> Trả lời Chủ đề</a>
	
	<div id="pagination_bottom" class="pagination_bottom">
	
		
	</div>
</div>








	<!-- next / previous links -->
	<div class="navlinks">
		
			
				<strong>«</strong>
				<a href="http://congdongso.com/diendan/threads/2799-L%C3%A0m-quen-v%E1%BB%9Bi-Java.html?s=91392ada43de74d14b61d2ecc3a60ac7">Làm quen với Java</a>
			
			 | 
			
				<a href="http://congdongso.com/diendan/threads/2798-Mega1280-RS-T%E1%BB%95ng-h%E1%BB%A3p-ebook-Java-ti%E1%BA%BFng-Anh.html?s=91392ada43de74d14b61d2ecc3a60ac7">[Mega1280][RS]Tổng hợp ebook Java tiếng Anh</a>
				<strong>»</strong>
			
		
	</div>
	<!-- / next / previous links -->

<div id="thread_info" class="thread_info block">
	
	<h4 class="threadinfohead blockhead">Thread Information</h4>
	<div id="thread_onlineusers" class="thread_info_block blockbody formcontrols">
		<div class="inner_block">
			<h5>Users Browsing this Thread</h5>
			<div>
				<p>There are currently 1 users browsing this thread. <span class="shade">(0 members and 1 guests)</span></p>
				<ol class="commalist">
					
				</ol>
			</div>
		</div>
	</div>
	
	
	
				<style type="text/css">
				 #seofq_list_cell *{background:none;display:inline;border:none;color:black;padding:0px 0px 0px 0px;-webkit-border-top-right-radius:0px;-webkit-border-top-left-radius:0px;-webkit-box-shadow: none;font-weight:normal;}
				 #seofq_list_cell h2{font-size: 130%;font-weight: bold;}
				 #seofq_list_cell h3{font-size: 120%;font-weight: bold;}
				 #seofq_list_cell h4{font-size: 120%;}
				 #seofq_list_cell h5{font-size: 110%;}
				 #seofq_list_cell strong{font-size: 110%;}
				 #seof_queries_list a.seoq{margin:0px 0px 0px 0px;font-size: 100%;}
				 </style>
	<h4 class="threadinfohead"><span class="optiontitle">Từ khóa tìm kiếm:</span></h4>
	<div id="seof_queries_list" class="thread_info_block">
		<div class="inner_block">
			<div id="seofq_list_cell">
			
				<span></span>
			
			</div>
		</div>
	</div>
		
	
	
	
	<h4 class="threadinfohead blockhead">Tag của Chủ đề này</h4>
	<div id="thread_tags_list" class="thread_info_block blockbody formcontrols">
		<div class="inner_block">
			
			<a id="tag_edit_link" href="http://congdongso.com/diendan/threadtag.php?s=91392ada43de74d14b61d2ecc3a60ac7&t=2782" class="textcontrol" style="float:right; font-size:11px; margin:10px;">Thêm / Sửa Tag</a>
			
			<div id="tag_list_cell">
				
		
			<a href="http://congdongso.com/diendan/tags.php?s=91392ada43de74d14b61d2ecc3a60ac7&tag=mvc">mvc</a>, 
		
			<a href="http://congdongso.com/diendan/tags.php?s=91392ada43de74d14b61d2ecc3a60ac7&tag=pattern">pattern</a>
		

<img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/11x11progress.gif" id="tag_form_progress" class="inlineimg hidden" alt="">
			</div>
			<p>
				<a href="http://congdongso.com/diendan/tags.php?s=91392ada43de74d14b61d2ecc3a60ac7">Xem Nhóm Tag</a>
			</p>
		</div>
	</div>
	
	<div class="options_block_container">
		
		<div class="options_block2">
			<h4 class="blockhead options_correct">Bookmarks</h4>
			<div id="social_bookmarks_list" class="thread_info_block blockbody formcontrols floatcontainer options_correct">
				<h5 class="blocksubhead">Bookmarks</h5>
				<ul class="icon_list"><li class="smallfont">
	
		<a href="http://digg.com/submit?phase=2&url=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/bookmarksite_digg.gif" alt="Submit to Digg" title="Submit to Digg"></a>
	
	<a href="http://digg.com/submit?phase=2&url=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark">Digg</a>
</li><li class="smallfont">
	
		<a href="http://del.icio.us/post?url=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/bookmarksite_delicious.gif" alt="Submit to del.icio.us" title="Submit to del.icio.us"></a>
	
	<a href="http://del.icio.us/post?url=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark">del.icio.us</a>
</li><li class="smallfont">
	
		<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/bookmarksite_stumbleupon.gif" alt="Submit to StumbleUpon" title="Submit to StumbleUpon"></a>
	
	<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark">StumbleUpon</a>
</li><li class="smallfont">
	
		<a href="http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/bookmarksite_google.gif" alt="Submit to Google" title="Submit to Google"></a>
	
	<a href="http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=http%3A%2F%2Fcongdongso.com%2Fdiendan%2Fshowthread.php%3Ft%3D2782&title=Ki%E1%BA%BFn+tr%C3%BAc+3+l%E1%BB%9Bp+v%C3%A0+MVC+pattern" target="socialbookmark">Google</a>
</li></ul>
			</div>
		</div>
		
		<div class="options_block">
			<h4 class="collapse blockhead options_correct">
				<a class="collapse" id="collapse_posting_rules" href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern-Kien-truc-3-lop-va-MVC-pattern.html#top"><img src="./Kiến trúc 3 lớp và MVC pattern   Kien truc 3 lop va MVC pattern_files/collapse_40b.png" alt=""></a>
				Quyền viết bài
			</h4>
			<div id="posting_rules" class="thread_info_block blockbody formcontrols floatcontainer options_correct">
				
<div id="forumrules" class="info_subblock">

	<ul class="youcandoblock">
		<li>Bạn <strong>Không thể</strong> gửi Chủ đề mới</li>
		<li>Bạn <strong>Có thể</strong> Gửi trả lời</li>
		<li>Bạn <strong>Không thể</strong> Gửi file đính kèm</li>
		<li>Bạn <strong>Không thể</strong> Sửa bài viết của mình</li>
		<li>&nbsp;</li>
	</ul>
	<div class="bbcodeblock">
		<ul>
			<li><a href="http://congdongso.com/diendan/misc.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=bbcode" target="_blank">BB code</a> đang <strong>On</strong></li>
			<li><a href="http://congdongso.com/diendan/misc.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=showsmilies" target="_blank">Smilies</a> đang <strong>On</strong></li>
			<li><a href="http://congdongso.com/diendan/misc.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=bbcode#imgcode" target="_blank">[IMG]</a> code đang <strong>On</strong></li>
			<li><a href="http://congdongso.com/diendan/misc.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=bbcode#videocode" target="_blank">[VIDEO]</a> code is <strong>On</strong></li>
			<li>HTML code đang <strong>Tắt</strong></li>
		</ul>
	</div>
	<p class="rules_link"><a href="http://congdongso.com/diendan/misc.php?s=91392ada43de74d14b61d2ecc3a60ac7&do=showrules" target="_blank">Nội quy - Quy định</a></p>

</div>

			</div>
		</div>
	</div>
</div>








<div style="clear: left">
   
   
</div>

<div id="footer" class="floatcontainer footer">

	<form action="http://congdongso.com/diendan/index.php" method="get" id="footer_select" class="footer_select">

		
			<select name="styleid" onchange="switch_id(this, &#39;style&#39;)">
				<optgroup label="Chọn Giao diện"><option class="hidden"></option></optgroup>
				
					
					<optgroup label=" Standard Styles">
									
					<option value="73" class="" selected="selected">-- Default Style</option>
					
					</optgroup>
										
				
				
					
					<optgroup label=" Mobile Styles">
					
					<option value="72" class="">-- Default Mobile Style</option>
					
					</optgroup>
										
				
			</select>	
		
		
		
			<select name="langid" onchange="switch_id(this, &#39;lang&#39;)">
				<optgroup label="Chọn nhanh Ngôn Ngữ">
					<option value="7" class="">-- US</option><option value="8" class="" selected="selected">-- VN</option>
				</optgroup>
			</select>
		
	</form>

	<ul id="footer_links" class="footer_links">
		<li><a href="http://congdongso.com/diendan/sendmessage.php?s=91392ada43de74d14b61d2ecc3a60ac7" rel="nofollow" accesskey="9">Liên hệ</a></li>
		<li><a href="http://congdongso.com/diendan">Forum</a></li>
		
		
		<li><a href="http://congdongso.com/diendan/archive/index.php?s=91392ada43de74d14b61d2ecc3a60ac7">Lưu trữ</a></li>
		
		
		<li><a href="http://congdongso.com/diendan/showthread.php?t=5551">Nội quy</a></li>
		<li><a href="http://congdongso.com/diendan/threads/2782-Ki%E1%BA%BFn-tr%C3%BAc-3-l%E1%BB%9Bp-v%C3%A0-MVC-pattern-Kien-truc-3-lop-va-MVC-pattern.html#top" onclick="document.location.hash=&#39;top&#39;; return false;">Lên trên</a></li>
	</ul>
	
	
	
	
	<script type="text/javascript">
	<!--
		// Main vBulletin Javascript Initialization
		vBulletin_init();
	//-->
	</script>
        
</div>
</div> <!-- closing div for body_wrapper -->

<div class="below_body">
<div id="footer_time" class="shade footer_time">Múi giờ GMT +8. Bây giờ là <span class="time">23:38</span>.</div>

<div id="footer_copyright" class="shade footer_copyright">
	<!-- Do not remove this copyright notice -->
	© 2008 - 2012 congdongso.com
	<!-- Do not remove this copyright notice -->	
</div>
<div id="footer_morecopyright" class="shade footer_morecopyright">
	<!-- Do not remove cronimage or your scheduled tasks will cease to function -->
	
	<!-- Do not remove cronimage or your scheduled tasks will cease to function -->
	
	
</div>
 

</div>
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-15630153-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>


</body></html>